/**
 * 
 */
package org.yelongframework.model.generator;

import java.io.OutputStream;

import org.yelongframework.model.generator.interceptor.GFACModelGenerateInterceptor;
import org.yelongframework.model.generator.interceptor.GMATModelGenerateInterceptor;
import org.yelongframework.model.generator.manager.GenModelAndTable;

/**
 * 模型生成器
 * 
 * @since 1.0.0
 */
public interface ModelGenerator {

	// ==================================================生成==================================================

	/**
	 * 生成模型组件内容
	 * 
	 * @param genModelAndTable 模型表
	 * @param outputStream     输入流
	 * @throws ModelGenerateException 生成异常
	 */
	void generate(GenModelAndTable genModelAndTable, OutputStream outputStream) throws ModelGenerateException;

	// ==================================================拦截器==================================================

	/**
	 * 添加模型表拦截器
	 * 
	 * @param modelGenerateInterceptor 模型表拦截器
	 */
	void addModelGenerateInterceptor(GMATModelGenerateInterceptor modelGenerateInterceptor);

	/**
	 * 添加字段列拦截器
	 * 
	 * @param modelGenerateInterceptor 字段列拦截器
	 */
	void addModelGenerateInterceptor(GFACModelGenerateInterceptor modelGenerateInterceptor);

}
